package exams;

import java.util.HashSet;

public class PrintCircle {
	int radius;
    static int angle = 18;
    HashSet<String> set = new HashSet<String>();
    double tempy, tempx;
    
    public PrintCircle(int r){
        radius = r;
    }
	public void printCircle(int radius){
        //根据angle值计算这个圆要打印多少个点，18度一打则是360/18 = 20个点
        //从12点钟到3点，算出这个象限的点之后就可以轻松推算出其它三个象限的对应点
        //把所有算出来的点都放在hashset里
        for (int i=0; i <= 90; i=i+angle){
            tempy =  Math.floor(this.radius * Math.sin(i * Math.PI /180));
            tempx =  Math.floor(this.radius * Math.cos(i * Math.PI / 180));
            //推算方法是： r-tempx, r+tempy; r+tempx, r+tempy, r-tempx, r-tempy; r+tempx, r-tempy
            //其实就是加减符号的穷举，共4种情况
            set.add(String.valueOf(this.radius - (int) tempx) + "#" + String.valueOf(this.radius + (int) tempy));
            set.add(String.valueOf(this.radius + (int) tempx) + "#" + String.valueOf(this.radius + (int) tempy));
            set.add(String.valueOf(this.radius - (int) tempx) + "#" + String.valueOf(this.radius - (int) tempy));
            set.add(String.valueOf(this.radius + (int) tempx) + "#" + String.valueOf(this.radius - (int) tempy));
        }

        //print the circle
        System.out.println(set.toString());
		for (int i=0; i<=radius*2; i++){
			for (int j=0; j<=radius*2; j++){
                //判断这个点是否需要显示出来
                if (set.contains(i+"#"+j)){
//                    System.out.print(i+"#"+j);
                    System.out.print(" * ");
                }else{
                    System.out.print("   ");
                }
			}
            System.out.println();
		}
	}
	public static void main(String[] args) {
        //还是指定半径好，不用手动输入了，影响显示效果
//		Scanner sc = new Scanner(System.in);
//		sc.useDelimiter("\n");
//		System.out.println("Please input the radiius of the circle to print:");
//		if (sc.hasNextInt()){
        
//            PrintCircle pc = new PrintCircle(sc.nextInt());
        PrintCircle pc = new PrintCircle(10);
        pc.printCircle(pc.radius);

//		}

	}

}
